<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>子传父</title>
</head>
<body>

<!--
  子组件其实可以直接操作父组件的数据
  但是 props传递数据的原则是单向数据流，也就是只允许父组件向子组件传值。
  因为如果子组件直接操作父组件的数据，会导致父组件的数据控制逻辑异常复杂。

  所以这种做法是不推荐的
-->

<div id="app">
  <div>父组件</div>
  <ul>
    <li :key="index" v-for="(item, index) in fruits">{{item}}</li>
  </ul>
  <hr>
  <div>子组件</div>
  <menu-item @add-fruit="addFruit($event)" :parr="fruits"></menu-item>
</div>

<script src="../lib/vue.js"></script>
<script>
  Vue.component('menu-item', {
    props: ['parr'],
    template: `
      <div>
        <ul>
          <li :key="index" v-for="(item, index) in parr">{{item}}</li>
        </ul>
        <button @click="addLemon">增加柠檬</button>
      </div>
    `,
    methods: {
      addLemon() {
        this.$emit('add-fruit', 'lemon')
      }
    }
  })

  let vm = new Vue({
    el: '#app',
    data: {
      fruits: ['apple', 'orange', 'banana']
    },
    methods: {
      addFruit(e) {
        this.fruits.push(e)
      }
    }
  })
</script>

</body>
</html>